//package com.bw.Interceptor;
//
//import java.lang.reflect.Method;
//import java.util.UUID;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//import com.bw.annontation.Token;
//import org.springframework.stereotype.Component;
//import org.springframework.web.method.HandlerMethod;
//import org.springframework.web.servlet.ModelAndView;
//import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
//
//
///**
// * url����ʱ�������������أ�����һ��Ψһ�ı�ʶ����token����
// * ���½�ҳ����Session����token����룬������ʱ��֤��ͨ����ɾ����
// * ���ٴε������ʱ���ڷ������˵�Session���Ѿ��������ˣ������޷���֤ͨ����
// */
//@Component
//public class TokenInterceptor extends HandlerInterceptorAdapter {
//
//
//    /**
//     * ��������ķ���֮ǰ����
//     * @param request
//     * @param response
//     * @param handler
//     * @return
//     * @throws Exception
//     */
//	@Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//        if (handler instanceof HandlerMethod) {
//            HandlerMethod handlerMethod = (HandlerMethod) handler;
//            Method method = handlerMethod.getMethod();
//            Token annotation = method.getAnnotation(Token.class);
//            if (annotation != null) {
//                boolean needSaveSession = annotation.save();
//                if (needSaveSession) {
//                    request.getSession().setAttribute("token", UUID.randomUUID().toString());
//                }
//                boolean needRemoveSession = annotation.remove();
//                if (needRemoveSession) {
//                    if (isRepeatSubmit(request)) {
//                        return false;
//                    }
//                    request.getSession(false).removeAttribute("token");
//                }
//            }
//            return true;
//        } else {
//            return super.preHandle(request, response, handler);
//        }
//    }
//    /**
//     * 进入controller方法之后，渲染视图之前调用
//     */
//    @Override
//    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
//                           Object arg2, ModelAndView arg3) throws Exception {
//        System.out.println("2222222222222222222");
//
//    }
//
//    private boolean isRepeatSubmit(HttpServletRequest request) throws Exception {
//        String serverToken = (String) request.getSession( false ).getAttribute( "token" );
//        if (serverToken == null ) {
//            //throw new FormRepeatException("session Ϊ��");
//            return true;
//        }
//        String clinetToken = request.getParameter( "token" );
//        if (clinetToken == null || clinetToken.equals("")) {
//            //throw new FormRepeatException("�������ҳ����룡");
//            System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAA");
////            System.out.println("�������ҳ����룡");
//            return true;
//        }
//        if (!serverToken.equals(clinetToken)) {
//            //throw new FormRepeatException("�ظ����ύ��");
//            System.out.println("�ظ����ύ��");
//            System.out.println("BBBBBBBBBBBBBBBBBBB");
//
//            return true ;
//        }
//        System.out.println("CCCCCCCCCCCCCCCCCCCCCCCCCCCCC");
//        System.out.println("У���Ƿ��ظ��ύ����ҳ��TokenֵΪ��"+clinetToken + ",Session�е�TokenֵΪ:"+serverToken);
//        return false ;
//    }
//}
